Frequently Asked Questions (with answers) for Java programmers

           _____________________________________________________
  ________|                                                     |________
  \       |   Java Programmers FAQ         http://www.afu.com   |       /
   \      |   Last modified Feb 20, 1999   Peter van der Linden |      /
   /      |_____________________________________________________|      \
  /___________)                                              (__________\

  p  p :

Andrew Kuksov, 2:5030/731.71
p, kab@vsi.vrn.ru
Andrew Tershechkin, 2:5004/21.28
 , aleksey@astrologicalrobot.com
George Djioev, 345:817/2.18@RemoteAccessNetwork
bii714@cclib.nsu.ru
dm@aspec.ru
pm27sdw@beta.math.spbu.ru
lavris@lutsk.ukrpack.net
Leonid Volkanin, 2:5080/80.42
Dennis Adamchuck, 2:5020/1469
Wowa Bushin, 777:5030/42.11
p , otk.unets.ru!vaa@otk.unets.ru
Igor Philippov, 2:450/129.13
Dmitry Melamud, 2:467/28.40

>      ;)

JAVA FAQ p  ,   p 
ppp,    ,   Java.

  FAQ home page  http://www.afu.com   p
p  Java,     p  FAQ.  
p,   FAQ,   p afu.com.

  ------------------------------------------------------------------------

 Java FAQ    :

   * 1. p    Java
   * 2. p p
   * 2.5 p
   * 3.  p
   * 4. p  
   * 5.  p
   * 6. p,  p ppp   Java
   * 7. I/O (/)
   * 8.  p p  p 
   * 9.   p
   * 10. AWT
   * 11. Swing
   * 12. pp
   * 13. 
   * 14. 
   * 15.   
   * 16. 

> H   FAQ, p  , p p p. 
>  16,17,18,19,20,21 .

   * 17. For C, C++ Afficionados
   * 18. Java Idioms
   * 19. Java Gotcha's
   * 20. Further Resources
   * 21. Acknowledgements

                       ------------------------------

1. p    Java

  1. ( 1)    Java  p?

     [*]    p "   Java  p?"
      .
        ,    ,   
     ,    p .
           ppp  - ,
       Java,       p Java,
     p     p  FAQ Just Java 1.2

      p  p    ( , Swing,
     p  , / p,      ..).
       p CD  p  Java , p,
     p, p     . p ,  CD
           p (p Java 
     Windows, Mac, Linux, Solaris (sparc  x86).  p

         p   Java, thin
      clients, CORBA, TCP/IP, Java beans,  .., p
       Not Just Java p FAQ.
                                                                   [Image]
           ppp  Java; 
            . 
      p

       ( p )   web-p Sun
     Microsystems: http://www.sun.com/.
     p p   Java p   :
        o p ,  p,   -   Java. 
             CD,  pp,    
          p Java. J++  p   - p 
            p  Java. p ,  J++
           p   Java (Swing,
          Collections, JFC, RMI).
            p Java,    J++  
          .
        o   p, p  , 
          p p Java (Java 1.2 [aka Java 2])? p,
          p  "JApplet"  p .  , ,
          ,    p .
        o pp,      , p 
          p.    (p )
          ppp    p  p. ,
          p      .
        o p   .   p,   
          p  ppp  Java?   
           p "p p Java"  "Java-".   ,
            p ,  p   
          pp  ?
        o H    pp  Peter' Norvig'
             ppp.
        o    p :    
          pp  - p    
          ppp " "?     p
          ?
        o p  .  p ,  
          p?       ,  
          p p? ,    
          ?
        o    p CD,      pp
          ?    p  ,    CD
          ,  p p, p Java,    pp 
           .   p Java p   p
          (Mac, Linux  ..)?

           ,   ,
         p. p FAQ 
      p  pp  p  60   Java.

  2. ( 1)        Java   p
     p?

     [*]  p  :
     http://www.geocities.com/RainForest/Canopy/4774/Java/education.html
     
     http://www.flathill.com/languages/java/
     
     http://www.fastgraph.com/books/java.html
     
     http://teamjava.com/links/tj-srv.cgi?MUF=0,tj-booklist.muf
     
     http://www.javaworld.com/javaworld/books/jw-books-index.html
     (   p   p  p ;-))

                       ------------------------------

2. p p

  1. ( 2)  p   ppp  Java?

     [*]    p.
       1. pp " "  FAQ  ,  p
             . H  - 
          p   Java. p , , ,
          p p   . Amazon p 
          p  p   Java.

       2.   p Java  http://java.sun.com

       3. p  Java tutorial   ( , ..,
          ,    p  ).

       4.  p Microsoft J++,  p   
          p microsoft p "p Java".  p
           pp   p Java  p
               
          p p ,     .

       5. pp  FAQ  p p,   
          p. p ,    p  
          p  .  FAQ p p  
          ,      p  p.

  2. ( 2)   pp "Hello World!"  p?

     [*]  p  p   p:
       1.   p javac  ?
          

          javac -garbage

           p,    p   p
          .     , p
           javac,         PATH
            pp, p javac.
       2. p   p p CLASSPATH?
           JDK 1.0.2  CLASSPATH      
               .
           JDK 1.2  CLASSPATH   p p 
           p .    CLASSPATH 
             " ", p 
          .
           , , ,     "." (
          pp)   CLASSPATH.
            CLASSPATH , javac    
          ,      ,  p 
             pp.   p 
           CLASSPATH, p  p FAQ
       3. p   ?
             javac      
          pp. p p   p 
            FAQ

  3. ( 2)   pp "Hello World!"  ?

     [*]    , - p  VM (java 
     pp)     .
       1.    ,    
          java.applet.Applet.     
          p   init.
             p,  p   
          main(). H     p,   
          p  .
       2.        "public".  
           ,      pp 
          ,   p - .   - ,
          p  main() ,   , ,
          pp java.applet.Applet.
       3.         ,
            pp .    - HelloWorld, 
              HelloWorld.java     
          "HelloWorld.class".
       4.    ftp      pp, 
                 , p
           p  HH p p,  
          ASCII.
       5.    CLASSPATH (/ codebase   ).
           pp     ,  
            pp  .   p 
           CLASSPATH, p  p FAQ

        ,    pp :
       1.     p, pp   
           HTML .
       2.     System.out,  p  p 
           java console pp.   p  ,  
            p p  pp.
       3.   p,    pp
              Java, p  .
          Internet Explorer  p p Netscape  
          p JDK 1.1. p  pp  
           appletviewer'  JDK.

  4.    CLASSPATH?

     [*] p p CLASSPATH  p  VM,
        , p p   ,
       . CLASSPATH p 
        o   pp, p     
           .
        o   p     . p
            - ,  p p   ( 
            ).
        o  p  zip  jar ,    
          p . , p, p p p
          p   p  /  .
           p   p   p-
          p, ";"  Windows; ":"  Solaris.
      , :
        o pp  CLASSPATH    HTML , 
          pp codebase.
        o  JDK 1.1  , java   
          (lib/classes.zip),       .
        o JDK p 1.2  "." ( pp), ,
              . (H jre   - . .)
        o  JDK 1.1 jre   p CLASSPATH 
             . (H Solaris, CLASSPATH 
          p.)

      JDK 1.1.2,  -  ,   
     CLASSPATH   classes.zip. H CLASSPATH 
      
        o   p  pp   p 
        o  rmic
        o     Swing  JDK 1.1
        o   "" (native) .

       CLASSPATH  : " set CLASSPATH=. "
     H   pp : Windows (basic application class),
     Solaris (package class), javac (multiple packages),  browsers (applet
     codebase).
     ----------------------------

     Hp pp  p  Windows:

     D:\src\tries\HelloWorld.class

             ## JDK 1.1, p CLASSPATH  
             > cd D:\src\tries\
             > D:\jdk11\bin\java HelloWorld
               # OK: 1.1   classes.zip   pp

             > D:\jdk11\bin\jre HelloWorld
               # : jre    .  CLASSPATH

             > cd D:\
             > D:\jdk11\bin\jre -cp D:\src\tries HelloWorld
               # OK: jre  classes.zip, -cp  pp 


             ## JDK 1.1,  p CLASSPATH  
             > set CLASSPATH=D:\src\tries
             > D:\jdk11\bin\java HelloWorld
               # OK: java  CLASSPATH

             > D:\jdk11\bin\jre HelloWorld
               # : jre   CLASSPATH ( Windows)

             ## JDK 1.0.2,  CLASSPATH 
             > set CLASSPATH=D:\jdk102\lib\classes.zip;D:\src\tries
             > D:\jdk102\bin\java HelloWorld
               # OK:

             > set CLASSPATH=D:\jdk102\lib\classes.zip;D:\src\tries
             > D:\jdk11\bin\java HelloWorld
               # :    (thread) NULL - p
 


     ----------------------------

     Hp pp  p  Solaris

     /usr/src/com/devjoes/killer/App.class,

        com.devjoes.killer:

             # JDK 1.1, p CLASSPATH  
             $ /usr/bin/jdk11/bin/jre  -cp /usr/src   com.devjoes.killer.App
               # OK:

             $ cd /usr/src/com/devjoes/killer/
             $ /usr/bin/jdk11/bin/java App
               # :     

             $ CLASSPATH=/usr/src/
             $ /usr/bin/jdk11/bin/java App
               # :   - com.devjoes.killer.App

             $ /usr/bin/jdk11/bin/java com.devjoes.killer.App
               # OK:


     ----------------------------

     pp   Solaris   Windows,   :
                                
      /usr/src/pack/Minimal.java   pack      pack.sub.Try.run()
      /usr/src/pack/sub/Try.java   pack.sub  ()

             $ CLASSPATH=""
             $ /usr/bin/jdk11/bin/javac /usr/src/pack/sub/Try.java
               # OK:  p

             $ /usr/bin/jdk11/bin/javac /usr/src/pack/Minimal.java
               # :   pack.sub.Try

             $ cd /usr/src
             $ /usr/bin/jdk10/bin/javac pack/Minimal.java
               # OK: H pack.sub.Try  .   p 

             $ cd /usr/src/pack
             $ CLASSPATH=/usr/src
             $ /usr/bin/jdk11/bin/javac Minimal.java
               # OK: H pack.sub.Try   p  CLASSPATH


     p   p killer

     /usr/src/com/devjoes/killer/FastApp.java

     (  com.devjoes.killer),   p   jar
     

     /usr/jars/JShapes.jar

         p .   p:

             $ CLASSPATH=/usr/jars/JShapes.jar
             $ cd /usr/src/com/devjoes
             $ /usr/bin/jdk11/bin/javac killer/FastApp.java


     ,  pp  .  
        ,   pp  html :

     <applet code=ArcTest.class height=400 width=400>


         ,  pp
     codebase:

     <applet codebase="mysubdir/" code=ArcTest.class ..


         p,  pp archive:

     <applet archive="applets.jar" code=ArcTest.class ..


     p : JDK 1.1 ReadMe
     Solaris JDK 1.1 tool documentation
     Win32 JDK 1.1 tool documentation

*( 2)   p I/O  p  Java?

[*]  Java p /   p.
pp      
   p . p   p
7.1.

*( 2)   /   ?

[*]  ,      pp,   
        .   
p .    p,   ,  
   Internet,   /  .
,   p,  p ActiveX p  Internet, 
 p pp     .

  p   p p. p 
 p 7.8.

*( 2)    / p 
p   p?

[*] Java 1.0  1.1   API  p.   
 , ppp  p . JDK
1.2 p     p p 
pp ( )  . p   
p 6.3.

*( 2)    pp /  printf 
scanf  C/C++?

[*]  java.text,   Java 1.1, p pp
/. p    p 7.11, 7.12,  17.7.

*( 2)  p  p,   ,  , 
    ,    (  )!

[*]  Java    ,    
.   ,  ,     
,  p   ,    .
p    p 1.1.2

*( 2)  p    : "Can't make static
reference to method..."?

[*]  , ,   :

class myclass {
            public static void main(String args[]) {
                myMethod();
            }

            public void myMethod() {
                //- 
            }
        }


p   :   p , 
     .    
 static ( ),      "myMethod()", 
        . H  
  main(),  ,   p myMethod().
p -static ,   p p  p,
     p,     ,
p p  . H p   
,   p  p, ,    ,
    .

  ,   myMethod()  pp :

        public static void main(String args[]) {
            myclass m = new myclass();
            m.myMethod();
        }


    p,    , p 
   ,   p. ,   init() 
start()  main. ,    :

        public static void main(String[] args) {
            Applet ma = new myApplet();
            ma.init();
            ma.start();
        }


*( 2)      myArray.length() ?  
 , p?

[*] ,   Java ,    , 
,   . ,    p .  
 myArray.length,    ( ),
p myArray.

*( 2)   p Java-,    p p
 ?

[*]   p , pp WindowAdapter. 
pp windowClosing()  ,    p 
 p p .       Listener'
 .

import java.awt.*;
import java.awt.event.*;

public class MyFrame extends Frame {
    public MyFrame(String s) {super(s);}

    public class WL extends WindowAdapter {
        public void windowClosing(WindowEvent e) {System.exit(0);}
    }

    //   ,  .

}


-    :

        f1.addWindowListener( f1. new WL()  );


      ,    
 p .

  p,   p   :

        MyFrame f1 = new f("wave");

        f1.addWindowListener( new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                // / setVisible(false) / dispose()
                System.exit(0); }
        });


p    p 1.0.19, 1.0.30  15.7.

*( 2)  b+=100; OK,  b = b+100;  p?

[*] -,     :

  byte b = 0;
  Incompatible type for =. Explicit cast needed to convert int to byte.
  b = b + 100;    //   
    ^
  b += 100;       // OK

p  ,  p  p p (b=b+100),  
   p p  int.  ,   p,
  pp ,  : "n=(byte) (b+100);". 
p , p  pp  p .
  Java :

     "p E1 op= E2  E1 = ()((E1) op (E2)),  ""
     -  E1,   ,  E1  " [JLS
     15.25.2]

  p   pp   .


byte theAnswer = 42;

, pp     [JLS 5.2]

*( 2)      Float-?

[*]    -  :

        Float One;
        Float Two;
        Float Hard = One + Two;


H p  p  .

 Java   p  p 32-  ,
Float  float. Float -  ,   p -
p     .   p
p   ,   p p 
   . float - p  ( int), 
 .

  p - ,    p
.    p   
,  "float".    p  
    (pp,     Vector), 
"Float".

    ,  p,     . 
       pp  
p,     p.      :

        Float One = new Float(1.0);
        Float Two = new Float(2.0);
        Float Hard = new Float(One.floatValue() + Two.floatValue());


p  p 3.8 , 5.1,  10.1.

*( 2)        pp    
 java  ?

[*]  JAR-.     JAR,  
p  :

        java -jar [-options] jarfile Mainclass  [args...]


*( 2)   p p p   pp 
JDK 1.1.6?

[*] H  JDK 1.1.5, p p    p 
 pp.

 pp p p  JDK 1.2,  pp  ,
   p

     java -Djava.compiler=NONE myapp

 p   
http://java.sun.com/products/jdk/1.2/changes.html#aaa24

                       ------------------------------

 Java   PC!

          PC     p p
        Java,     ,     !
JavaLobby p p PC p Java  p   
p Java-.

p http://www.javalobby.org/servlet/PetitionServlet/pjpc
,  JavaLobby, p  

  ------------------------------------------------------------------------

, p p Java.

    Java -   p.

   *    /  
      ,      .
   *   Java-   
         .
   *        
     .

      
,    . ,    
Windows 95,    .      
Java,        MS-DOS  Windows 3.1,   
Windows 95, Windows 98, Windows NT    Windows CE. , 
   ,  ,   Windows.
    Microsoft,    
    , ,  , 
    .

 1998    Microsoft   
Microsoft.   " "  : "
 Java"   ""  Java.
[Exhibit 101 (MS7 033448)].

  1998     Microsoft 
   Sun   Java,  
 .         
,  Java-  Microsoft;  
  .   Microsoft
  . 
http://www.usdoj.gov/atr/cases/f1700/1762.htm.

                       ------------------------------

 Windows

*   Java  Windows 3.1?

[*] . p Question 1.6 H  Windows 3.1   ,
       
 

*( 2)   Win95,   DOS     
  8.3.
"This program cannot be run in DOS mode"

[*]       . ,  
Win95/98 command.com,       MS-DOS. 
    ""   "
".  "H   Windows"  
HHH.

   ,       ,  
.     ,    .
   .

*( 2)       ,  
    ".java"? ,    
      .    ?

[*]  :         
 .      Java ,  
   ,  ""   "  " , 
    ".txt"   .java .

 :         
 " /   " ,   
" "     Unix.  
        :

 /*
  * Usage: jre crlf file1.java file2.java ... fileN.java
  */

import java.io.*;
class crlf {
    public static void main(String s[]){
        byte b[]; byte p;
        FileInputStream is;
        BufferedOutputStream os;
        File f;
        for (int i=0; i < s.length;i++){
            try{
                f=new File(s[i]);
                b=new byte[(int)f.length()];
                is = new FileInputStream(f);
                is.read(b); is.close();
                os = new BufferedOutputStream(
                new FileOutputStream(s[i]),b.length);
                p='?';
                for(int j=0; j < b.length; j++){
                    if((p!='\r')&&(b[j]=='\n')) os.write('\r');
                    p=b[j]; os.write(p);
                }
                os.flush(); os.close();
            }catch(IOException e){
                System.err.println(e.toString());
            }
        }
    }
}


   ,      
.

 "javac crlf.java"    
java crlf outfile.txt
   Wordpad  . Wordpad   
 ->->->WordPad

*( 2)      "out of environment variable
space"?

[*]      Windows,    
CLASSPATH .      . 
Windows 95,8    c:\windows\system.ini   :

        [NonWindowsApp]
        CommandEnvSize=4096


 NT     " ",  ""  
 " "   COMSPEC  
.

 p   config.sys  -  :

        shell=command /e:4096


                       ------------------------------

3.  

  1. ( 3)   Java ""  ""?

     [*]  Java  ,    
      "" JVM   Java API. Sun   
     Addison-Wesley,   Java, ,
     ,  .

     Sun        Java.
      http://java.sun.com/communitysource/

        Java     Sun.

       Java     , 
         ,    
      ,   ,   
             API,
       API    
     .    ,  
     ""() API,      
     ,      
       .  ,  , ""
          .

  2. ( 3)   -,  ,  
         FAQ?

     [*] FAQ   Java    http://www.afu.com, 
       .      ...

          B   ,   
      .  ,   ,    
      .      
          FAQ -     
     .

       FAQ      ,  
     ,     Deja News (p p 1.4),
      p  FTP  ftp://rtfm.mit.edu.   
      :
     /pub/usenet-by-group/comp.lang.java.programmer/Java_Programmers_FAQ,
          ,     
         .  ,  
            ftp   pp
     /pub/usenet-by-hierarchy/.   pp ,  alt/, ba/,
     ca/, comp/,  pp  , pp,  ..   
           FAQ.

           FTP,     
       rtfm.mit.edu  mail-.   E-mail 
      mail-server@rtfm.mit.edu   "help"    
        .

           Internet  
     FTP, telnet,   IETF   http://www.ietf.org, 
        RFC (  ).

  3. ( 3)  ,         ?

     [*] . ! :-)

       http://www.dejanews.com/home_ps.shtml

   *  "Newsgroups"  "comp.lang.java.programmer" ( 
     ).
   *   "Subject"  "Frotteur" (    
     ).
   *  "Create Filter"
   *   ,     

     nnn Documents ( nnn -  ).

 ,        .  
   ,     .  ,
    Usenet    .   
    -      
. H   .  
   ,  ,    
.

         :
http://sunsite.unc.edu/java/cgi-bin/query
 http://asknpac.npac.syr.edu/

       Javaworld:
http://www.javaworld.com/search.html

*( 3)       Java?

[*]       :

http://java.miningco.com/msub7.htm

*( 3)      Java Language?

[*]     http://java.sun.com.

 :

     http://java.sun.com/docs/books/jls/html/index.html (Java 1.0)...

...   Java 1.1:

     http://java.sun.com/products/jdk/1.1/docs/guide/innerclasses/spec/innercla
sses.doc.html

... Java 1.1:

     http://java.sun.com/docs/books/jls/html/1.1Update.html

...Java API:

     http://java.sun.com/products/jdk/1.1/docs/api

       (   
-).    "  "
("Clarifications and Amendments"):
http://java.sun.com/docs/books/jls/clarify.html.

     :
http://docs.sun.com:80/ab2/coll.127.1/@Ab2CollToc?subject=java

*       Java API?

[*] JavaSoft    API   
   Java,     
    .  JavaSoft   API 
: http://java.sun.com:80/products/api-overview/index.html
APIs       JDK 1.2  :

     http://java.sun.com/products/jdk/preview/docs/

*( 3)    "Naming Conventions"   Java.

[*]   "Naming Conventions"   :

     http://java.sun.com/docs/books/jls/html/6.doc.html#11186

        Java ( -
Doug Lea):

     http://gee.cs.oswego.edu/dl/html/javaCodingStd.html

    naming conventions  FAQ'.

*( 3)    ,   JDK?

[*] H Java Developer Connection http://java.sun.com/jdc  
 Sun   Java,      .
H         
legal department.         - 
     http://java.sun.com:80/cgi-bin/bugreport.cgi

 ,      : -,  
     , -,    
      .

    RFE (Request For Enhancement -   )
      - .
        
.   Java Developer Connection (, ):
http://java.sun.com/jdc.   
http://developer.javasoft.com/developer/bugParade/#votes

*( 3)     Java?   Java
 Win3.1?

[*] H   JDK   
http://java.sun.com/cgi-bin/java-ports.cgi
  ( ),    GPL Kaffee JVM
  http://www.transvirtual.com/ports.html

   Java  Win3.1. IBM' ADK1.02 
   :

   * http://ncc.hursley.ibm.com/javainfo/latest/answers/faq0.html
   * http://www.alphaworks.ibm.com/formula

IBM,   ,    Java  Linux.
IBM' Jikes   http://www.alphaworks.ibm.com/. H alphaworks,
 ,     , profiler jinsight,
.

 Java  NetscapeNavigator  Win3.1. Java, ,  
    Win3.1 -   Win3.1
 ,      ( 
      (multithreading)).

   JavaSoft'  JavaPC,   PC 
 Java- (,  ,   Win3.1/DOS). 
   OEM'   , 
   ,       
  Pentium III:
http://java.sun.com/products/javapc/index.html. JavaPC   $100,
   486'  8MB  .    16- 
NetscapeNavigator'  Microsoft' InternetExplorer', 
JVM    JDK API 1.0.2, JavaPC  
 ,    JDK API 1.1, 
   DOS  Windows3.x.

*( 3)      Java3D?

* Java 3D FAQ,  
http://tintoy.ncsa.uiuc.edu/~srp/java3d/faq.html,    
  . H     Java3D  
       API.

*( 3)   "  Java"?

[*]      Java (Java User Group
- JUG)    ,        
  .     
   http://sunsite.unc.edu/javafaq/usergroups.html.

     JUG   /,    
 -     .

*( 3)   Java Bean ( - p Java)?

[*] Java Bean -  Java ,    
. ,    ,     
,      . Java Beans -
   .

  Java Beans  ,     Lego. 
  ,        
     -. . http://www.jc100.org/.
 Java Beans FAQ  http://java.sun.com/beans/faq/faq.general.html.

*( 3)         Java?

[*]  ,      
 "  Java"  , ,  
 Addison Wesley.   : " 
      , ,
  ,    ."     
http://java.sun.com/docs/books/chanlee/second_edition/vol1/examples.html 
http://java.sun.com/docs/books/chanlee/second_edition/examples.html

*( 3)    ,  p Java   ?

[*] H       pkginfo, :

   pkginfo -l SUNWjvrt

H      :

   PKGINST:  SUNWjvrt
      NAME:  JavaVM run time environment
  CATEGORY:  system
      ARCH:  sparc
   VERSION:  1.1.6,REV=1998.07.30.16.21
   BASEDIR:  /
    VENDOR:  Sun Microsystems, Inc.
 ... 

  

   java -fullversion

   - ,     JDK 1.2.
 

   java -version

                       ------------------------------

4. p   pp

  1. ( 4)   Java- lex'a  yacc'a  
     flex'  bison'?

     [*]   lex'  JavaLex   yacc'
      CUP.

     LALR(1) pp JavaLex  JavaCup:
     http://www.cs.princeton.edu/~appel/modern/java/

     LL(k) pp JavaCC: http://www.suntest.com/JavaCC/
     LALR(1) pp SableCC (p - McGill U.)
     http://www.sable.mcgill.ca/sablecc/index.html, 
        GNU.

  2. ( 4)      (obfuscator)  ?

     [*]  Java    ,  
          . Obfuscator' 
     ,  ,     
       .    
      ,        .  ,
           p,    
      -  .    " 
     ",          
     .

     Zelix KlassMaster   .   
        http://www.zelix.com/klassmaster
       ,   
        http://www.4thpass.com/SourceGuard. , 
     http://www.primenet.com/~ej/ 
     http://www.math.gatech.edu/~mladue/HoseMocha.java,  
         p .

           JDK 1.1.

             
     JDK 1.1: http://www.monmouth.com/~neil/Obfuscate.html

         . 
            Java. Mocha   
        ;     .
     H
          http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
       (  ++). ,   ++, 
          (-!).   
     , ,  SourceAgain 
          http://www.ahpah.com/

     http://www.meurrens.org/ip-Links/Java/codeEngineering/ -  
     FAQ  :  Java  (Java Code Engineering)  
      (Reverse Engineering).

  3. ( 4)      .zip ,
       Java ?
     (pp, classes.zip, moz3_0.zip)

     [*]   jar  JDK 1.1(.1):
          jar [  ] [] _ _
          [_]

     Hpp:
          jar cvf myJarFile.jar *.class

       
          jar cvfO myJarFile.zip *.class

       ()  (:  'O'
       JDK1.0.2)

     H Unix'   :
          zip -rn ".class" my_file.zip *

       Info-ZIP: http://www.cdrom.com/pub/infozip/
       : ftp://ftp.uu.net/pub/archiving/zip/src/zip21.zip

     H     JAR   
       "zigbert".      GUI,
       Java.  p  p :
     http://developer.netscape.com/software/signedobj/jarpack.html

         .class  JDK 1.0.2   ZIP ( 1.1
       Jar):
       1.       (
           WinZip 6.2  );
                Unix:

               zip -r0 classes.zip <directories>

       2. ,         p.
          ( ,     foo/bar/myMain.class,
          , ,  myMain      
          foo.bar.      myMain.class). 
              ,  
            .
       3.  p     .html p.
       4. H      .html :

          <APPLET CODEBASE="."
                  ARCHIVE=my_zip_file.zip,myOtherZip.zip,thirdfile.zip
                  CODE="my_main_class.class"
                  WIDTH=600 HEIGHT=250>
              </APPLET>


     H  JDK 1.1,   APPLET    Jar
       :

     <APPLET ARCHIVE=myfile.jar
                     CODE=myapplet.class
                     WIDTH=600 HEIGHT=250>
             </APPLET>


            myapplet, 
        myfile.jar.   APPLET   jar
           :

     <APPLET ARCHIVE="myclasses.jar"
                     CODE="linden.net.MyApplet.class"
                     WIDTH=480
                     HEIGHT=120>
             </APPLET>


          jar   . 
     PKZIP     Jar'.

*( 4)       Java  
 , .exe,  PC?

[*]      , 
     Java.    
   ,      
,      Jar.
H       .
   Symantec http://www.symantec.com, Supercede
http://www.supercede.com,  Tower Technology http://www.twr.com.  
  Windows. Tower Technology   
Unix.

   ,   native Java compiler,
  IBM,   HPJ (High Performance Java -
 Java) .    
  ,     2    12
java ,      .   
http://www.alphaworks.ibm.com/

  Instantiations JOVE
http://www.instantiations.com/jove.htm,
   Toba
http://research.microsoft.com/research/lt/toddpro/papers/coots97.pdf,
 Network World, "Vendors Rush To Speed Java Performance" ("
   Java"), 9  1998,
http://www.nwfusion.com/news/0209java.html

          
 Java:   .  ,  
,   Java DLL ( .exe)   C++, 
 ,    C++   /  
       C++. C++
   ABI,     
  .   C++  
 ,       
    linker-.

  C  .    ,  
 (,       ?). 
 C++      C,  
'extern "C"'.

  ,     
 ,       Java  
 .       ,   
  .

( 4)        
 Java ( )?

[*]java -prof MyClass

      java.prof, 
  .    :
       # of calls      method called     called by        time spent

       (      (                      (
        )          )        ( )        )

   Unix,      , ,
 

sort -r +82 <java.prof > java.sort

     Java    
 .    Java -  JProbe Profiler, 
   http://www.klg.com/jprobe.  , JProbe 
.    OptimizeIt,  
 http://www.optimizeit.com.      
   ,     
 ,     ,   
         .   
  .      CodeWarrior IDE
http://www.metrowerks.com       Java. 
 Java Workshop  Sun     .

JDK 1.2      
.     ,     
.    ,  ,  ,
  :

   java -Xrunhprof:help

H,   ,     
,      .

( 4)    javadoc       java,
   JDK     ?

    Netscape is unable to find the file or directory named:
    /E|/Jwrkshop/JDK/bin/java.lang.Throwable.html


    (Netscape        :
    /E|/Jwrkshop/JDK/bin/java.lang.Throwable.html)

[*]    JDK ,    html-
    ,  ,     
,    ,  . H
    ,    
 ,     .

           ( JDK
    ),      
        javadoc,  
 ,   . ,    
   .class,      
.

 , javadoc      -   
     , ,     JDK API. 
          
. javadoc -    ,  
 .

( 4)          
JDK.     ,   
  -.      ?

[*]  :

     javac *.java

 :

     javac -depend tip.java

 "tip.java"   "  ", , p 
()   .  ,    
. , ,   "-depend"      
  .       
,       .

  "-depend",   "javac files"  
       
   .

 -depend       .
  ,       ,
         .
H,   - :

     Class.forName(argv[0]);

     ,  ,   
 ,    Makefile.

( 4)     java.lang.UnsatisfiedLinkError 
  Java ,    
(Native Method)?

[*]         DLL.

   Windows 95/NT,   ,   DLL
   ,      PATH. (
    ,   ,  
 .   ,    Java Plug-in  
   Java   ).

 Solaris,   ,    LD_LIBRARY_PATH
    .

,  jdb  ,     
"_g".  ,     jdb  Java ,
   ,     ,
       jdb.  ""
       .

H,         
mynm.dll ( Windows)  mynm.so ( Solaris),      
  mynm_g.dll  mynm_g.so.

( 4)        private ,
?

[*]     JDK 1.1.4.  :

    public class MyDialog {

            void Setup() {
            addWindowListener( new WindowAdapter() {
                  public void windowClosing(WindowEvent e) {
                         myCloseWindow(); }
                  }
                  );     //   

            }

        private void myCloseWindow() {   //  private 
            dispose();
        }
    }

   javac.    private   private,
   . Sun    
    .

( 4)     Java   ?

[*]     Java  Sun,     (
   ).  :

   * JDK 1.0.2
        FCS   1996 .    
         JDK 1.0.
   * JDK 1.1
        ( 1997)      
     .     JDBC  
     beans.       
     JNI.     .
   * JDK 1.2
        ( 1998)  Swing  . Swing
     -    -  .

( 4)    jre  java?

[*]   ,      
classpath     .   ,
 jre    JDK 1.2.     "java" 
 bin    jre/bin.

jre.exe   java,    Java Runtime
Environment.      
,    CLASSPATH  ,  
    -cp  -classpath. ,  
   ,      Java , 
  .

java.exe   java,    JDK. 
  CLASSPATH    ,  
    .

       -   Java  (JVM),
    Java,   JVM.  
jre.exe   JDK.   java.exe   
    JDK.

( 4)  IDE (Integrated Development Environments - 
 ) ?

[*] H   IDE:

 Apptivity (Progress)       http://www.apptivity.com
 Bluette ()         http://blue.donga.ac.kr/bluette/index.html
 Chicory ()         http://www.chicory.com
 CodeWarrior Professional   http://www.metrowerks.com
 Freebuilder                http://www.freebuilder.org
 GRASP ()           http://www.eng.auburn.edu/grasp
 Grinder                    http://www.tpex.com
 Java WorkShop (Sun)        http://www.sun.com/workshop/java
 Javelin, Visual Object
 Development for Java       http://www.stepahead.com.au
 JBuilder (Inprise)         http://www.inprise.com/jbuilder
 JDE  emacs              http://sunsite.auc.dk/jde/

Kawa (Webcetera) http://www.tek-tools.com/kawa Metamata
http://www.metamata.com NetBeans (Swing-based) http://www.netbeans.com
PARTS alpha (ObjectShare) http://www.objectshare.com PowerJ (Sybase)
http://www.sybase.com/products/powerj SilverStream
http://www.silverstream.com Simplicity for Java
http://www.datarepresentations.com Super Mojo (Penumbra)
http://www.penumbrasoftware.com SuperCede (Asymetrix)
http://www.supercede.com teikade (PFU Ltd) http://www.pfu.co.jp/teikade
Together/J (Object Intl Inc.) http://www.oi.com Visaj (Imperial SW Tech)
http://www.imperial-software-tech.co.uk VisualAge (IBM)
http://www.software.ibm.com/ad/vajava Visual Cafe (Symantec)
http://cafe.symantec.com Visual J++ (Microsoft) ( ) Xelfi
0.94 http://www.xelfi.com

*(Sect. 4)  Visual J++ -  ?

    Microsoft - " - Java"

[*]       
     Microsoft. MS -
    ,  
  Java.    -   
     Microsoft,  ,  
  - " - Java 
 Java-".  
http://www.usdoj.gov/atr/cases/f1700/1762.htm VJ++   
Java- ,      , 
.

 Microsoft    -  ,
  Java.     1998 .  
,   ,  J++  Java.
 ,     
  Java,   Microsoft   1998 .(, 
Microsoft   Java,      Sun   
).

  
 
   ,    Microsoft   
      - 
   .     , 
,  Microsoft      . 
   ,      .  
   ,  Java   .

 Java-,    Java Lobby - 
,    Java.   
 .    http://www.javalobby.org 
 .   ,   Java:

   *      . 
      MS J++    Sun' JDK.  
        http://www.orbiter.demon.co.uk/
   *   Netscape Communicator ( Internet Explorer)
   *   Internet Explorer  ,  Java-.
   *   GNU JVM, Kaffe,  IDE ( Sun, .
     H      Microsoft J++ SDK)

   *  Java-     
     http://java.sun.com.
   *   Java-   :
     http://www.kaffe.org, http://www.oryxsoft.com/projects/gvm, 
     http://www.redhat.com/linux-info/jolt
   *  Java AWT    
     http://www.biss-net.com/biss-awt.html     
       ftp.java-linux.org (linux' ).
   *  Java-  :
     http://www.gnu.org/software/java/java.html

,   1998 . Microsoft   ,   , 
  ,  .   
. Microsoft   

   * ,   ,  .
         Microsoft   
      .
   *      PC
      ,   Microsoft 
       Windows.      
      .

    ,     Microsoft.
 ,   Microsoft  ,  ,
    .   MS   
     , ,  
 .

*( 6)     ,   Java  ?

[*]   ,   Java,  -  .
-    
.  ,      
,   - . H    "" 
  "".

 Java       .
       , Java 
    ,    
.  ,  Java  NullPointerException (
),   NullReferenceException ( ).

      :

    public class LinkedList {

        public LinkedList head;

        public LinkedList next;

        public Object data;

        public LinkedList advanceToNext(LinkedList current) { ...

    }



  -    java.util.Vector, 
       ( ), 
    ( ).     
 .      -  
,    ,     
.     ?

*( 6)    -     ?

[*]   (       )  
. H    ,       
.   ,      ( 
  ).  -  ,    
 ,     (.     ).

:     (int, char  ..) 
 ,   _ _.   , 
        .

.  FAQ:
    ,   Java  ?
. :
JLS 8.4.1 Formal Parameters

*(. 6)   " "? (class litrals)

[*] H   JDK 1.1.    "Class", 
   .      "void" 
, :

    Class myCl1 = Character.class;

    Class myCl2 = Void.class;

    Class myCl3 = Object.class;

    Class myCl4 = String[].class;

    Class myCl5 = int[][].class;



  , , :

    Class cl = thing.getClass();

    if (cl.equals(myCl1))

    System.out.println("It's a Character class");



,   

        Component.class



 

        Class.forName("java.awt.Component")



   ,    .   
     ,     
 .

*(Sect. 6)       Java?

[*]    :

  1. H       
      : com.javasoft.jag - "com"  "edu"   
     ,     .
  2.   -  ,    
       : PolarCoords ().  ( 
     )   "--able", , "Runnable"
     (), "Sortable" (). :
     java.util.Observable  ,  java.util.Observer - .
         .
  3.    - /  ,  
             -  :
     currentLimit ().
  4.   - /  ,   , 
      -  : calculateCurrentLimit ().
  5.   (  final)   :
     UPPER_LIMIT
  6. .  FAQ:
             Java?
     . :
     JLS 6.8 Naming conventions

*( 6)     {package}.{class} 
{package}.*?
     ,      
  , ..

    import java.rmi.server.*;

    ...

    RemoteObject ro;



    java.rmi.server.RemoteObject ro;

[*]          . 
-          (  
).         
. H       "*".
       ,  
   ,  .

       ,     
.  ,  ,   ,    
     .

  ,   . H , 
   "" .   
  "*"   ,   
.          
,  ,     .
   

import java.rmi.server.RemoteObject;





import java.rmi.server.*;



  ,        
 ,       .
   

java.rmi.server.RemoteObject ro;



   ,    :

        java.rmi.server.RemoteObject ro

                  = new java.rmi.server.RemoteObject();



   ,       
.

      "*".     ,
          
. H,

    import com.sun.*;

    import com.ms.*;



      Modem   .  
"*"-,     ,     
  ,   ,   ,  
  .  Java 1.2    java.util.List.  
  ,   java.util.List.     
"import java.awt.*; import java.util.*;",  , , 
  -      . 
     ,     API  
  .

 Java 1.0,   ,     ,   
 ,       .  Java 1.1 
  ,     .  
""    .

  -   ,      
.      ,  java.awt,
      "import java.awt.*;"

*( 6)    "private protected"?

[*]     JDK 1.0 FCS (    ).  
  JDK 1.0.1.     ,    
   .     : 
 JDK,      ,  private protected  
 ,      .   
   .     
 -   .      - 
.

    . H   . Private protected
  ,      .   , 
   .

H (inheritance)

*      ?

[*] H  :   
  "",      "".
  -   , ,  - .

H,         
  ,   ,       
.           Java
(   C++) .

       
  :

  1.    ,    
     .
  2.       .
  3.     ,    
      .

 :

  1.        
             ,  
      .      ,
           .  
       ,    () 
        (    , ..  
       ). H,   java,*  
       String,   Object,    java.*,
       toString(). ,  ,  
      Observable   Observer  , 
      .       
      () ,      (
      ) .
           ( 
       ),   .    
     ()    , 
      . ,     
     ,      ,  
         ,    
      .
     H,       .
         ,  
          .  , 
        ,   .   , 
      .
  2. H  H  ,  
       .     
         ,   
             
         ,  
      .      , 
            , 
       ,       
       .      
     ,   -   /.
  3.     Java Java   C++ , 
        .    
     ,       
       ,   .   
           ,  
          ,   .

 :

  1.      
  2.    final  
  3.      .  
              ( ..
         ).     
           (    
     , ..       
      )

*( 6)      ?

[*]  ( ,    )    
 (        
)          (  
  ) -     ,   
:

    class A {
    public static method1() {
            A.method2();
        }
    public static method2() {
        }
    }

    class B extends A {
        public static method3() {
            A.method1();
        }
        public static method2() {
        }
    }


  ,   method2()  A.method2(), 
 B.method2(). A.method2()     ,  
    ,   "A."    
.

*( 6)   String final?     .

[*]  ,   String    (
 String     ,     final, 
   string,    
.) Strings        
.

  , String   ,  
 Java. ,    String  
p.       String,    
  ,      String.  
  ,   ,    .

-    .   String   
final ( Java 1.0   )  ,   
    .    
      ,      ,
        .

      ,   
 String final,      
StringBuffer .

*( 6)   / ,   ?

[*] "    .   
        ."
    ,  . (. JLS 8.6.7
Default Constructors)

      ,   
   ,    . 
     ,   
     .

   FAQ:
  No constructor {superclass}()

 :
JLS 8.6.7 pp  

*( 6)        ?
      ,    
      , ..  
    (, IntegerLinkedList,
StringLinkedList  ..)

[*]    Java (   
C++)  ,   java-  
.     -   
,        .

,     LinkedList.    
    (IntegerLinkedList,
StringLinkedList  ..)?

   ,     
,      "Class"   
   "isInstance"  ,  
   ,   .

    public class LinkedList {
        Protected Class type = Object.class;

        public LinkedList(Class type) { this.type = type; }

        public void addElement(Object element) throws Exception
        {
        if(!type.isInstance( element ))
            throw new Exception(
                 "   (" + type    + ")" +
                 "    ("     + element + ")"   );
         ...
         }
     }


,       isInstance()  
"  ", ,    
- :

        public void addElement(Object element) throws Exception
    {
        Class c = element.getClass();
        if(!type.isInstance(c))


 ,    isInstance ,  
     .  ,   JDK
1.2  "",      
 .       Java   Java
Developer Connection: http://java.sun.com/

 

*      ?

[*]

  1. ( ).      
     .    ,      ,
            
     .    ,   
     ,      ?
  2. ( ).  .   
        ,   :

         foo("",
             new Object[] {"3", "4", new Integer(5)} );
      // ...

      void foo(String param1, Object param2[]) {
          System.out.println(param1);
          for (int i = 0; i < param2.length; i++) {
              System.out.println(param2[i].toString());
          }
      }


       ,     .
     ,  ,    
         .
  3.      ,   
     ,       (  
      ,     ),    
       .     
        ;   , 
     -.

,          (Alan
Perlis): "    ,  - , ,
,   - ".    
  ,     .

*( 6)       ?
    ,      , 
         ?

[*]   .   - "   
   ".     ,
  -     , 
    .
  -    .   
 .      ,  
.

        void jfoo(Object ref[]){
        ref[0] = new Object();
    }
    ...
    Object kludge[] = new Object[1];
    kludge[0]= myObj;
    jfoo(kludge);
    if (kludge[0] == myObj) ...
    else ...


,    /  
   ;    
  .

*( 6)  ,     ?

[*]    ,  .  
,        , .. 
    .     
 .       ,
   -       
    .



*( 6)      ?

[*]   .     , 
        .   
 4x5:

    int arr[][] = new int[4][5];


  ,       , 
  ,       
 .       
:

    int arr[][] = new int[4][];    //     
    for (int i = 0; i < 4; i++) //   
    arr[i] = new int[i + 1];       //  i  i+1 


,       ( 
 ),       "null-",
       
NullPointerException.
 , :

    int arr[] = new int[4];


 

        if (arr[2] == 0)


, 

        Integer Iarr[] = new Integer[4];


        . H,

        Iarr[2] = myInt;




        arr[2] = new Int(27);


   

        if (Iarr[2].equals(myInt))

*(Sect. 6)   ?

[*]            
    (    ),
 

    java.lang.System.arraycopy(Object src, int src_position,
        Object dst, int dst_position, int length);


    -   ,     
  ,       
   .

 :    java.lang.System.arraycopy() ,
  src  dst       ,  arraycopy() 
 ,         
 (..  ). Sun  ,   
   .

 :
JLS 20.18.16 {java.lang.System.arraycopy()}

*(Sect. 6)   ?

[*]      0.0, 0, null, false, '\u0000'  .. 
.    ,   
   (default value),   
 .

            
,  -.    
   System.arraycopy()     
 ,      .

*(Sect. 6)        
?
    -.      
 (, ) .

[*]  ,     
,  20 - 40  ,    memset()  .

H  Java Virtual Machine (JVM)   :  
  ,  System.arraycopy() 
   ,    ,
  ,     ..   
  ,  System.arraycopy()    .

    public static void bytefill(byte[] array, byte value) {
    int len = array.length;
    if (len > 0)
    array[0] = value;
    for (int i = 1; i < len; i += i)
        System.arraycopy( array, 0, array, i,
            ((len - i) < i) ? (len - i) : i);
    }


H Sun' JVM    ,   ,  
,   JIT-,      
      log2(array.length) .  
 ,        .

                       ------------------------------

7. I/O

  1. (Sect. 7)   ,     ?

     [*]   . H    . , 
      "C:\work\mydata.txt"    :

         135   7512   3659814  328   1 54829
         68522 19982810  38

     .e.   ASCII,     .
       :

     //   
     RandomAccessFile f = new RandomAccessFile("c:\\work\\datafile.txt", "r");

     //     
     String s= f.readLine();

     //  
     StringTokenizer st = new StringTokenizer(s);

     //     
     i = Integer.parseInt(st.nextToken());

       RandomAccessFile,    
       readLine().     
     FileReader     BufferedReader.     ,
     ,         ,
      :

     import java.io.*;
     import java.util.*;
     public class c  {
         public static void main(String args[]) {
           try {
             RandomAccessFile f = new RandomAccessFile
                                             ("datafile.txt", "r");
             String s;
             while ( (s=f.readLine()) != null )  {
                 System.out.println("read: "+s);

                 StringTokenizer st = new StringTokenizer(s);
                 int i=0;
                 while (st.hasMoreTokens()) {
                    i = Integer.parseInt(st.nextToken());
                    // i       
                    //   Double.parseDouble(),  ...

                    System.out.print(" "+ i);
                 }
                 System.out.println();
             }

           } catch (Exception e) {System.out.println("Excpn: "+e); }
           //  -,   "Just Java"    
         }
     }

        :     .

  2. (Sect. 7)   String/int/boolean/..  ?

     [*]    -    EasyIn, 
       http://www.afu.com/ ( ,    
     FAQ).       , , :

     EasyIn easy = new EasyIn();

     int i = easy.readInt(); //  int  System.in
     boolean b = easy.readBoolean(); //  boolean  System.in
     double d = easy.readDouble(); //  double  System.in


     ...   .

     EasyIn ,          
     .     .

            (,
     ),   JDK 1.0.2

     java.io.DataInputStream in = new java.io.DataInputStream(System.in);
     String s = in.readLine();


         JDK 1.1:

     java.io.BufferedReader in =
      new java.io.BufferedReader( new InputStreamReader(System.in));

     String s = in.readLine();


        ,      
      ,        FAQ. H 
       ,      
     /  .    Javasoft  
        .

  3. (Sect. 7)     System.out.println()? 
     .    -  "l"  "n",    "n".

          "print line" ("
     "),    ()      String 
         (   System.out.print() ). 
     ,      Java 
     . ,  ,     
     ,   readln(),   ,  readLine().

  4. (Sect. 7)    COM ,  Java?

     [*]  JDK 1.2  - 
      .     ,
       Java Developer Connection ( ),
     http://java.sun.com)    
     http://java.sun.com/jdc/earlyAccess/communications.html.

        JDK 1.2        
     COM- . 
        o http://www.sc-systems.com    Windows 95, WindowsNT,
          OS/2, Macintosh PPC, Solaris Sparc, Linux x86, FreeBSD x86, HP/UX
          PA-RISC,     .
        o http://www.cd.com/portio
        o     Unix      
          .      
          http://jarvi.ezlink.com/rxtx/     GPL, 
            Linux, Irix, Solaris, Windows 95,  NT.

         , ,   Java 1.1 
      1.0,      . 
     COM-   " " ("terminal server").
      COM-    ,  
         Socket.     
        SNMP     ( 
        ,     ). 
        (    Win95)   
      ,    ,  
         
     .

       ,  Windows95    
     - (    )    "Dial-out IP" 
     Windows95.  : http://www.tactical-sw.com/.

          ,    
      ,    / .    
        ,     "prn"  "lpt1" 
     -  (    
     ),   "/dev/-"  Unix. H  :

     // ,    
     //      "Hello, world"

     import java.io.*;
     public class lpt {
         public static void main (String[] argv) {
             try {
                 FileOutputStream os = new FileOutputStream("LPT1");
                 // "" PrintStream
                 PrintStream ps = new PrintStream(os);

                 // 
                 ps.println("Hello world!");

                 //   --  
                 //       
                 //  -      .
                 ps.print("\f");
                 //    
                 ps.close();
             } catch (Exception e) {
                 System.out.println("Exception occurred: " + e);
             }
         }
     }


          (.,  
     ),       , ,  ,
     Java          .
          ,  , 
        -   .

*( 7)      /?  
   .

[*]      BufferedInputStream. H Java
 ,   /    ;
         
 .  / -    
  Java   Data.

*( 7)      / 
?

[*]   java.text.NumberFormat.

    http://www.newbie.net/sharky/lava/, 
  Cay Horstmann'
http://www.horstmann.com/corejava/Format.java
H  ,      
  printf  C,   
   %e  printf.

*( 7)        ()
?

[*] H ,  Steve Chapel,  
StreamTokenizer  ,       
     (double)  
 (, -1.23e-45).

import java.io.*;

public class ReadExponential {
    public static void main(String argv[]) {
        DataInputStream in = new DataInputStream(System.in);
        StreamTokenizer st = new StreamTokenizer(in);
        try {
            while (st.nextToken() != StreamTokenizer.TT_EOF) {
                switch (st.ttype) {

   case StreamTokenizer.TT_NUMBER:
             double num = st.nval;
             int exp = 0;
             st.ordinaryChars('\0', ' ');
             st.nextToken();
             st.whitespaceChars('\0', ' ');
             if (st.ttype == StreamTokenizer.TT_WORD &&
                 Character.toUpperCase(st.sval.charAt(0)) == 'E') {
                 try {
                    exp = Integer.parseInt(st.sval.substring(1));
                 } catch (NumberFormatException e) {
                    st.pushBack();
                 }
             } else if (st.ttype < 0 || st.ttype > ' ')
                 st.pushBack();
             System.out.println("Num " + num * Math.pow(10, exp));
             break;
    case StreamTokenizer.TT_WORD:
             System.out.println("Word " + st.sval);
             break;
    default:
             System.out.println("Char '" + (char) st.ttype + "'");
             break;
         } // end switch
     }  // end while
   } catch (IOException e) {
     System.out.println("IOException: " + e);
   }
 } // end main
}


*( 7)       ,  
readChar()  DataInputStream.      ,
  '?'.

[*] ,   Java  16-  Unicode,   
      8-   ASCII. 
,       , 
   .     -
 InputStreamReader,     8- 
16-:

FileInputStream fis = new FileInputStream("myfile.txt");
InputStreamReader isr = new InputStreamReader(fis);

char c3 = (char) isr.read();

,   ,   ,    
   :

FileInputStream fis = new FileInputStream("myfile.txt");
DataInputStream dis = new DataInputStream(fis);
char c1 = (char) dis.readByte();


*( 7)     Java?

[*] JDK 1.0    . JDK 1.1 
     public boolean delete() 
java.io.File

,   ,    ,   
  (stream).   close()   , 
    (the underlying file is gone).

*( 7)    ,    ?

[*] H      API ( )
  .  Java    
   .   
Runtime.getRuntime().exec()   "df"    "dir"  Windows.

  ,   JConfig  :
http://www.tolstoy.com/samizdat/jconfig.html
JConfig -   ,   
  Java API,      , ,
  ..  ,  Windows  Mac.

*( 7)         C:\ ?

[*]    -  File.list("C:\") -  .
    . -, \ (slash)  escape- 
Java,  ,     ,    .
-,    ,   .  
 , ,      :

File.list("C:\\.");




File.list("C:/.");


:  "/"    ,   "\"  
    Windows.   ,    DOS -
  CP/M -    , ,
   .   "/"    
   CP/M;   "\"   
    ,     "/" 
    .

*( 7)       ZIP: ZIP, GZIP PKZIP?

[*] Zip -   ,   PC,  
   .
GZIP -  GNU ZIP.     ZIP   
.  GZIP    ,     .

PKZIP -       Zip.
    ,   LZ77.   
   ZLIB , ,  
PNG (  ZLIB). PNG - Portable Network Graphics -
 ,   - ,  GIF 
TIFF.

  , LZW,   Unisys. LZW
   GIF    Unix' compress.  , 
   , LZ77    , 
LZW. LZW -     ,  
(Lempel, Ziv, Welch).

  (   java.util.zip),   LZ77
- Deflater  Inflater.    DeflaterOutputStream 
InflaterInputStream.   java.util.zip    
GZIPInputStream  ZipInputStream,   InflaterInputStream.

PKZIP -    DOS, Windows  OS/2,  PKWARE.

 Jar (Java Archive)    ZIP,    
-    . ,    WinZip
    ZIP.   InfoZIP 
PKZIP.

*( 8)     Java   HTML?

[*]     13.14.

*( 8)  Dialogs   ,   ?

[*]   ( ,     
)        JDK 1.0.2.  
       ,    .
     JDK 1.1.

 ( 8)        sun.*  JDK?

[ ]       java.* .  
  API,      Java    
Sun. H      API    
,        ,    
-  .

,         Java  
   JDK  Sun.      
   java.*    JDK   .

  -   ,    , 
 :
http://java.sun.com/products/api-overview/index.html
http://www.parmly.luc.edu/javaudio/
http://www.users.interport.net/~mash/javamidi.html

*( 8)        
Java?

[*]       Java,   
  . Mac-     ,
.   Windows 95     DOS 
 .    .  JDK 1.0  
, -     
   CLASSPATH.      
 .

    (. java.util.Properties)  
  -D      JRE.  
        ,
:

java -Dfoo=$foo MyClass (Unix)



java -Dfoo=%foo% MyClass (Win95/NT)

   "foo"     foo,  
    System.   ,     
-D    ("=")     
 foo  :

String env = System.getProperty("foo");

   ,    foo   
    arg[0].

java MyClass %FOO% ; Win32
    java MyClass $FOO ; Unix


H,    Runtime    
,    ,  .

import java.io.*;
import java.util.Properties;

public class Main {
    public static void main(String[] argv) {
        Properties envVars = new Properties();

        try {
          envVars.load(   //  "set"  Windows
                Runtime.getRuntime().exec("/bin/env").getInputStream());
        } catch (Throwable t) {t.printStackTrace();}

        System.out.println("\n\n"+argv[0]+" = <"+envVars.get(argv[0])+">");
    }
}

     Java   ,    ,
  .   10.6  .  Unix, 
    "/usr/bin/env".  Windows 95,  "set".

*( 8)    Java    Microsoft Access?

[*]  JDBC-ODBC .      ,  
    .    "--"
  (van der Linden) " Java"   
  .

,   JDK  Microsoft   JDBC-ODBC ,
-  .
JDBC FAQ   
http://java.sun.com/products/jdbc/jdbc-frequent.html

*( 8)       ,  -?.

[*]  .     ,  
   . ID   4156278, 
  JDC,  ,   ( ).
  user.dir    ,  
  .

   .

   *    java  .bat  .sh    "cd" 
     ( , ),     ,  
      ,       
      .
   * : exec("cd /home/wherever; externalApp.exe")  Unix, (,
     ,    NT).
   *   .exe ,  (   )
     .bat  .sh ,   cd     .exe (
            ).

*( 8)     ?

[*]          
,   ,    .
 :

int i =7;
Vector holdsInts = new Vector(5,1);

holdsInts.addElement(new Integer(i));
int j = ((Integer)holdsInts.elementAt(0)).intValue();


*( 8)      .  ,   
 ,    ,    
,     .   ,   
   ,      Thread.join 
 .   ?

[*]     /,  
       ,   
.

*( 8)     ?

[*]          0.0   1.0

double myrandom = Math.random(); // [0,1)


  "[0,1)"      "
  .9999999  .."   Sun ,   
  0  1,     ,  
. ,      
,   N  0.999999    .

 JDK 1.2    nextInt,     
   ,  .

      JDK 1.1,   
 int   . ,    1  6,
      1  52   
.  Random   nextInt,    .

import java.util.Random;
Random r = new Random();
int i = r.nextInt();


,   50%  ,       
. ,     abs()     
  .

int dice_throw = 1 + Math.abs(i) % 6;


  ,   abs()    
Integer.MIN_VALUE (    !). ,
   (and)     -
        
 ():

java.util.Random r = new java.util.Random();
int j = (r.nextInt() & Integer.MAX_VALUE) % (high-low+1) + low;


    "()  50% "  
       ,  
   ,   Java. 
 ,    ,   ""
nextInt()    . ,  ,   
 ,        ,  -
,        .

H   ,    ,   
,  ,   .   ,   
 (mod 2^n)   "" ,  . 
,   java.security.SecureRandom,  
   ,    
" " (Cryptograpic hash),   
     .

*( 9)     java.util.Date    JDK
1.0  JDK 1.1?

[*]  JDK 1.1  java.util.Date    , 
       .

,   ,  :

       1.  Date    , 
            .
       2.  TimeZone   ,  
            ,     
             .
       3.  SimpleTimeZone   
            TimeZone  JDK.     , 
                   
           ( ).
       4.  Calendar     
           Date    ,   , , 
            ( ).
       5.  GregorianCalendar   
            Calendar  JDK.   
                (Date-to-fields) 
            .
       6.  DateFormat   ,  
             Date     
            ( dd/mm/yy  dd.MMM.yyyy).
       7.  SimpleDateFormat   
            DateFormat  JDK.     
            ,   ,   
            .

       "",  
     Java,    
"".    ,   JDK 1.2   
 ,       1.1.4  1.1.6.  
1.1.1       ,
   ,      .

*( 9)        java.util.Date?

[*]  java.util.Date   ,    (long
integer),      , 
 00:00:00 Jan 1, 1970 UTC (Coordinated Universal Time).  
   "Epoch" ("").      (Epoch),
    UNIX.   ,  Epoch,
    ,   1/1/1970.

  ,     292,269,053 B.C. (
 )  292,272,993 A.D. ( ) (64    
-9,223,372,036,854,775,808  +9,223,372,036,854,775,807 ).
,  ,  JDK 1.2, GregorianCalendar  
  ,  4716 B.C.

 java.util.Date   (light-weight) ,
     .  
     .  ,   
 ,  ,    .

*( 9)    java.util.Date   UTC?

[*] H,       
,    (time-keeping). H   
     epoch  ,   
,    .   
    ,    
 UTC;    ,   
24 ,    20  (leap seconds),    
UTC,          1972 .

*( 9)      Date,    
 ?

[*]     Date   .  
    ,    .

Date now = new Date();

*( 9)    ,     , 
   ,   
java.util.Date.toString().      (Calendar)?

[*] H.  ,   ,    
    ,      
SimpleDateFormat.format().

*( 9)     java.util.Date  ?

[*]   ,   java.util.Date    
     "    ".
       
  ,    
java.util.Calendar     java.util.DateFormat.
        , 
        .

*( 9)     ,  
 ,     , 
- ,         
    ?

[*]      BigDate,  
 (Roedy Green),       
( BigDate).         
 Date  TimeStamp.      
   java.sql.Date.

*( 9)   Date( String )   ,   
   ?

[*]    java.util.Date   
SimpleDateFormat.parse().

  Date,      ,
 Date.parse( String).  Date.parse()   
   2-   (    1980
)   ,     . 
"" Date.parse(),     SimpleDate 
    .

*( 9)  Date(int year, int month, int date)  
   ,    ?

[*]  GregorianCalendar(int year, int month, int date) -  
 .    Calendar.set( year, month, day ).
,    GregorianCalendar   1 A.D.,    1901, 
    Date.


                             java.util.TimeZone

*( 9)    ,     
 JVM?

[*]      ID     .

  System.out.println( TimeZone.getDefault().getID() );

*( 9)  TimeZone.getDefault  ,   ().  
?

[*]         
 "user.timezone". JVM    .  
,  JDK 1.1  user.timezone    , 
  TimeZone.getDefault()    
"" ("fallback")  (    
 ).   JDK 1.1    JDK 1.2  
user.timezone     "fallback"  GMT (Greenwich
Mean Time).   JDK 1.1.3,  "fallback"  "PST" (North
American Pacific Timezone).

*( 9)          Do all the
standard objects use the     ?

[*] H,  JDK 1.2.  JDK 1.1, Date.toString()  Calendar 
 TimeZone.getDefault()     
(  ).  JDK 1.1, Calendar  SimpleDateFormat 
  1-   ( US  PST).

System.out.println( "Date format TZ = " + TimeZone.getDefault().getID() );
sdf = DateFormat.getDateTimeInstance( DateFormat.LONG, DateFormat.LONG );
System.out.println( "Date format TZ = " + sdf.getTimeZone().getID() );
Calendar cal = Calendar.getInstance();
System.out.println( "Calendar TZ = " + cal.getTimeZone().getID() );

    JDK 1.1.6, H  
       GMT,    :

Timezone default = GMT
Date format TZ = PST
Calendar TZ = GMT

   2  (bugs)  user.timezone 
,     GMT ( 
TimeZone.getDefault())    ,  DateFormat   1-
,      PST.

     DateFormat     ,
   .

*( 15)  < Windows RMI/ java debugger/IDE/> 
     Windows PC    ?

[*] Java    .  Java  ,
  Winsock DLL. ,    ,
  (resolve)      
"localhost".        ,   
     ,     
  (ISP).       
 ,        .

 ,       Win95   
    DNS .     .
  hosts   ,  localhost   
   .  Windows 95  hosts  
%windir%\HOSTS (, C:\WINDOWS\HOSTS).  Windows NT  hosts
 : %windir%\System32\DRIVERS\ETC\HOSTS ,
C:\WINNT\System32\DRIVERS\ETC\HOSTS).
 Win95  ,    ,    
   carriage-return/line-feed,   hosts
   . ,    goober.best.com
  hosts  


        127.0.0.1 localhost


 


        127.0.0.1 goober.best.com localhost


    :

     # Hosts file
     127.0.0.1       localhost
     129.146.77.177  goober


    ,   PPP   
  ,      .

     ,      
  Windows95   Winsock 1.1,   
  .     Winsock 2.0.
  Winsock 2.0,       Microsoft
Windows Sockets 2.0 Software Development Kit.     
  :
http://www.microsoft.com/win32dev/netwrk/winsock2/ws295sdk.html :
ftp://ftp.microsoft.com/bussys/WinSock/winsock2/

,           Win98.

                             

*( 15)    InetAddress.getByName()    IP
-    ,  "192.168.0.1",    (  
)  UnknownHostException.  :

Socket sock = new Socket("155.152.5.1", 23);

 . ?

[*]   ,     
    ,    JDK 1.1.  Solaris 
Windows NT,  IP      ,  
  . H Linux  Windows 95  IP 
 .
   InetAddress  IP    ,
  DNS .  IP    
  ,     InetAddress 
.      DNS-spoofing ( DNS),   JDK
1.1         
  .   JDK 1.1,

        InetAddress in = InetAddress.getByName("155.152.5.1");


[Note:    .  ?]
 :

      Microsoft   network-related    
     http://www.microsoft.com/

*( 15)    class    ,  
 .     ?

[*]     :   .class
()  .zip     showDocument()  URL. H,
   URL   ,      
     .
 :

              :
     http://www.best.com/~rmlynch/saveit.html

*( 15)   URLConnection   proxy firewall?
..   Java     Web  ?

[*]          . 
  runtime       
    .

java -DproxySet=true -DproxyHost=SOMEHOST -DproxyPort=SOMENUM code.java

,  proxyPort       80. 
     java.net.UnknownHostException 
java.net.NoRouteToHostException

     java.net.URLConnection,  
java.net.Sockets.

Netscape'  IE' JVMs ( Java ) (   
 4.+)       
 .         (
)   


    //    
    System.getProperties().put("proxySet", "true");
    System.getProperties().put("proxyHost", "myproxy.server.name");
    System.getProperties().put("proxyPort", "80");


H      ?
        URL   .
H      ,  ,     .
   ,   ,   
URL     firewall'.   !
    ,  firewall     .

 ,    socksProxyPort 
socksProxyHost  socks   . Socks  
 - 1080.

*( 15)   "swizzle"(  - []),
 "Swizzle an object?"

[*]   . "To swizzle an object"  
  .

*( 15)      1.1  
   .         ,
        
 .     :


java.io.InvalidClassException: MacroData; Local class not compatible


[*]     


    static final long serialVersionUID = 4021215565287364875L;


  .     
  "serialver",    JDK.   
   ,     
  .

*( 15)       ,  
!

[*]          
. TCP   ,   , 
    .  , 
     ,  
  . ,      
  .  tcpdump   .

*( 15)     IP    ?

[*]  Java 1.1 (   ) :


    String host = InetAddress.getByName("211.10.2.119").getHostName();


*( 15)     (anchor)  URL?   
      .

[*] - :


    URL url = new URL("http://www.my_domain.com/my_page.html");
    URL anchor = new URL(url, "#section2");
    this.getAppletContext().showDocument(anchor);

*( 10)   add(Component),    
.      z-  ?

[*]  JDK 1.0     z- .  
       
,     CardLayoutManager, 
,     .

 JDK 1.1 z-  ("z-"  
"-", ..     ) 
  add(Component comp, int index).   
  0  N.   Container paint  
   N  0.

*( 10)        ?

[*] 

java.awt.Toolkit.getDefaultToolkit().getScreenSize()



java.awt.Toolkit.getDefaultToolkit().getScreenResolution()

    -- (dpi, dots-per-inch).

   Toolkit -    

Toolkit.getDefaultToolkit().getColorModel().getPixelSize()

    -- (bpp, bits-per-pixel)

Math.pow(2, Toolkit.getDefaultToolkit().
    getColorModel().getPixelSize())

      .   :

1 << Toolkit.getDefaultToolkit().
    getColorModel().getPixelSize()

 2     1.

*( 10)          
Frame'?

[*]   MyFrame.getInsets().   
java.awt.Insets     : top, left, bottom, right,
       , 
.     ,   
Dimension,  omponent.getSize().

      ,   , 
Peer  Frame'  .   Insets, 
getInsets(),    .  Frame.addNotify(), 
  Peer'.

*( 10)    pp ?    

List tlist = new List(10);

 p     80    15  
.      ,   
,      .

[*] H     ,    
  Applet (     ):

public void paint (Graphics g) {
    tlist.setSize(200,200);
}

     Panel/Frame  :

tlist.resize(400,400);

*( 10)   ,     ?

[*]   Component.setBounds(int, int, int, int),  
    . ,     
super.setBounds(). H ,  setBounds()  
(deprecated)  reshape().

,   API       API. H
Component.setBounds  Component.reshape,   reshape 
setBounds.   ,  AWT     
  .  AWT   ,   , 
   , AWT (  )   
.    AWT    (    
 ),       
AWT  .     ,   .

*( 10)     ?

[*] H  ,       
 .   (0,0)  ,   . H 
  ,    ,   
 ,  :

Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
my_window.move(
 ( screen.width - my_window.size().width ) / 2,
 ( screen.height - my_window.size().height ) / 2 );

my_window.show().

  ,       .
      API,  translate(),
    :

void center(Component parent) {
    pack();

    Point p = parent.getLocation();
    Dimension d = parent.getSize();
    Dimension s = getSize();

    p.translate((d.width - s.width) / 2,
                (d.height - s.height) / 2);
    setLocation(p);
}

*( 10)       ?

[*]    ,     640x480,   
Y-    0  480.      800600,
    0  600.      ,
        .

          
    .     
. [  .]

*( 10)       p  
?

[*]    JDK 1.0.2,    
Component.reshape(int, int, int, int)       ,
   super.reshape().
 JDK 1.1., setBounds()    reshape(),    
 ,    setBounds(),   
 -    . ,   API
 .

      JDK 1.1. 
 ComponentListener  Frame',  :

import java.awt.*;
import java.awt.event.*;

class MyFrame extends Frame {
    public MyFrame() {
        addComponentListener(new CmpAdapter());
    }

    class CmpAdapter extends ComponentAdapter {
        public void componentResized(ComponentEvent evt) {
            //doSomething();
        }
    }
}

       :

class MyFrame extends Frame implements ComponentListener {
    public MyFrame() {
        addComponentListener(this);
    }

    public componentHidden(ComponentEvent evt) { }
    public componentMoved(ComponentEvent evt) { }
    public componentShown(ComponentEvent evt) { }
    public componentResized(ComponentEvent evt) {
        //doSomething
    }
}

 :

  public MyFrame() {
          addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent evt) {
              // doSomething;
        }
      } );
    }

*( 10)     Component preferredSize() 
minimumSize()?

[*]    LayoutManager   
  ,   .  
 ,   LayoutManager,  
      .    ,
       .

*( 10) H  AWT    ,    
  Graphics     ,  
paint()?

[*] H, ,      -,   
?      ,   ?
   ,    ,   
 . H       
 paint   ,      
. :  paint(),   g=getGraphics(); g.drawString(
...

*( 10)     repaint(),   
     . ?

[*] repaint()   AWT,   ,  
. AWT      
 ,        .  
   -    
   ,   .
*( 10)     ,   JDK 1.1  X
Windows?

java.lang.NullPointerException
at sun.awt.motif.MFramePeer.<init>(MFramePeer.java:59)
at sun.awt.motif.MToolkit.createFrame(MToolkit.java:153)
at java.awt.Frame.addNotify(Frame.java)
at java.awt.Window.pack(Window.java)

[*]     .  font.properties 
 "lib"  font.properties.bak.  JDK   
 .

  ,   Motif AWT  
"plain Dialog 12 point"     .  , 
  X ,    .

 X      :

% appletviewer HelloWorldApplet.html
SIGSEGV 11* segmentation violation
si_signo [11]: SIGSEGV 11* segmentation violation
si_errno [0]: Error 0
si_code [1]: SEGV_ACCERR [addr: 0x14]

 ,  ,       ,
  

xlsfonts > ~/fonts.txt

        ,  
.  xfd   :

xfd -fn "  " &

*(Sect. 10)  GridBagLayout   ?

[*]     . -,    
,    GUI  . -, 
 GridBagLayout      
  .     (  ), 
 GridBagLayout.   GUI    
       ,   
 .  ,    AWT
 Mountain View Java Users Group 4  1996,  :

     " ,      ,  GridBagLayout
        ,      .
     GBL  - ,     
        .  ' GBL'  
       GBL."

:      GBL,     
 .   , GBL    . GBL
 ""   -, 
removeLayoutComponent()    . .   4195295.

     GBL.    ,
    grid layout manager  Tk (Tcl/Tk).    
           ,
   (     ,   
),   Tk   .

*( 10) MyClass  ,   ,   
  .        Win95,  
    MacOS  Unix.

[*] ,  ,  ,     
Win95;      ,    
,      , ,
 "Arial"     ,    
 ,   Windows.

 Windows 95  Solaris 2.6  

   * Dialog
   * SansSerif
   * Serif
   * Monospaced
   * Helvetica
   * TimesRoman
   * Courier
   * DialogInput
   * ZapfDingbats

  :

import java.awt.*;

class foonly {
    static public void main(String s[])
    {
        String n[]= new Frame().getToolkit().getFontList();
        for (int i=0;i<n.length; i++)
            System.out.println(n[i]);

        System.exit(0);
    }
}

 ,      String  ,


String[] fonts = Toolkit.getDefaultToolkit().getFontList()

   ,   Helvetica, TimesRoman,  Courier 
JDK 1.1    , ,  SansSerif, Serif, 
Monospaced ().      
    .

         
      font.properties  $JAVAHOME/lib.
   font.properties,  
.       ,  
     ,     
 ,    .

*( 10)   Lightweight- (, 
  Component),   /  
. ?

[*] Lightweight-,    "", 
     repaint(). 
Component.repaint()     , 
"" Heavyweight- (   ), 
  **  repaint().

        Container.update().
,    -  super.update,   
Component.update(),     ,  
   heavyweight-,  . 
Container.update()  update   
Lightweight-,    .

: "" lightweight-    (
)       
heavyweight- 

   * heavyweight-    (  
     ), 
   * heavyweight-,    ,  
      (.. ,   update()    
       ).

   , update()       
 ,   .

     ,     
  paint(),     super.update/paint(),
    lightweight-   
.   ,  ,     
        - 


public void update(Graphics g) {
    super.paint(g);
}

     heavyweight-, 
lightweight-,       , 
    , .. "" . ,
 .

       , 
   

  public void update(Graphics g) {
    //    .
    offg.fillRect(  ,  );
    super.paint(offg);
    g.drawImage(myimage, 0, 0, null);
    }

  public void paint(Graphics g) {
    //        update().
    super.paint(offg);
    g.drawImage(myimage, 0, 0, null);
    }

  ,   this.update()  this.paint(), 
   ,      
,   .

*( 10)      setForeground(Color c) 
Component  setColor(Color c)  Graphics?

[*]  ,       :   
 .   ,   .  
Component.setBackground,    .

       ( "H 
   "),     Component   
 setForeground().     paint()     
Graphics,     g.setColor(c).

    Component,  Graphics    
   .     ,  
 . H   setColor()   
  .       , 
  .

*( 10)         Component  
   Component,       Component, 
   .  ?

[*] H,   .   Java API :

     "...          
            . 
        ,     ..."

      .  
 ""    .     , 
   ,   ,   
 .

*( 10)     ,     
  ?

[*]    :

   * JDK 1.0.2:  Event.WINDOW_DESTROY   
     hide()  dispose()  Frame.
   * JDK 1.1:
        o   WindowEvent    windowClosing() 
          hide()  dispose().       , 
              Swing' JFrame.
        o    AWTEvent.WINDOW_CLOSING   hide()
           dispose()   processWindowEvent().
   * JDK 1.2:  JFrame       
       (.  10).

*( 10)     ,
,    ?

[*]    sync()  Toolkit.  :

AnyComponent.getToolkit().sync();

*( 10)     Tab    ?

[*]  JDK 1.0         
 . JDK 1.1  Tab  Shift+Tab ()
.     ,    
  .

*( 10)     ""  ""
?

[*] H      (
 ,  ,  ,   
  ..).   ,    
  (  ,   ,
    ..),       
  . Button  List   Action
    .

     ,    
 , , ,      
,      .  ,  
 ""  ,      . H
      -     .

 :  addXListener()   ,
   XListener      XEvent.
H :   enableEvents()  
performX(),      .

*( 10)    ,    Java  
? H,      , 
   ...

[*]  MS Windows   Window    ,  
 Frame,      .   
"" . H    Window    -
   .

H  Window        ,  
 -    VM,   .  Java  
   .  -   ,
, .

*( 10)    /   Java?

[*]  JDK 1.1     .  JDK 1.2  
:

     MyFrame.setState( Frame.ICONIFIED );
     MyFrame.setState( Frame.NORMAL );

 .   .

*( 10)  ,        ?

[*]        
MouseListener    MouseAdapter    
    .   MouseEvent,  
,  ,   ,   ,  
.  - :

public void mouseClicked(MouseEvent m) {
 boolean leftButtonPush   =
    (m.getModifiers() & java.awt.event.InputEvent.BUTTON1_MASK) != 0;
 boolean centerButtonPush =
    (m.getModifiers() & java.awt.event.InputEvent.BUTTON2_MASK) != 0;
 boolean rightButtonPush  =
    (m.getModifiers() & java.awt.event.InputEvent.BUTTON3_MASK) != 0;

 int click = m.getClickCount();    //   1, 2, 3   

   m.isPopupTrigger().     true, 
   .     
    .

    processMouseEvent   .

public void processMouseEvent(MouseEvent e) {
    if (e.isPopupTrigger())  {
       //   
    }
    else
      super.processMouseEvent(e);
  }

    JDK 1.1.  ,  JDK 1.2  
java.awt.swing.SwingUtilities.isRightMouseButton(MouseEvent me).

.  15.10.

                       ------------------------------

11. Swing

  1. ( 11)   Swing?

     [*] Swing -    ,   JDK 1.2, 
          JDK 1.1. Swing  
     Java Foundation Classes    ,  
       ,    
        .    , Swing 
     (   ) Abstract Windowing Toolkit (AWT).

     Swing   ,    
      AWT (JFrame  Frame, JButton  Button, JApplet
      Applet, JPanel  Panel  ..)  ,  
     ,     AWT (   ,
        .)   ,   Swing  AWT.

     Swing      ,   
     -  , , , MFC -  
        Java,      
     .    ,   
          ,      ,
           Windows  PC,   Motif - 
     Unix-,    .

      , Swing  Accessiblity API.  API 
            
       Java VM     
     ;      .  
         ,   (,
         ). Swing   -
     ,       ,
     Accessiblity API    Swing   .
      Accessiblity API  ,    
         ,    ,
         .

      Swing -    ,   
     ,    .   - ,  
      -     Java.  ,
             
     . Swing      
     .

     Swing   JDK 1.1,   swing.jar     
      . Swing   JDK 1.2,  Javasoft  
        javax.swing.

*( 11)  ,     (WAIT_CURSOR),
 ,     ?

           ,
  ,   -   
     ? (H   
,   ,  ,   
..)

[*]  JDK 1.0.2      awt. H  JDK 1.1
       Component.   
    Cursor.

          . 
     ,      
   . H  JFC Swing   
     ,    
.   Swing - JFrame  :

             public void setGlassPane(Component glassPane)

   awt  'glassPane'  JFrame.

   ,  JFrame,  ( 
 )  ,  , 
  .   'glassPane',  
 ' '   JFrame,   
(   'glassPane')     
 '' .

H:          ''
,       . 
  '' , 'glassPane'  
  ""   .   ''
,     waitCursor()   'glassPane' 
      .

*( 11)   ,   "isCanselled()",
 javax.swing.ProgressMonitor,  ?

[*]        :
"canceled"  "cancelled". ,     "l",  
-  "ll". Sun   "canceled"  ProgressMonitor,  
      "cancelled". 
 ,     Sun    
"cancelled",      "isCancelled()"  PrinterJob.

*( 11)     Enter    
     Swing?

[*]        
Swing (  JTextComponent)  Enter (VK_ENTER) 
ActionEvent   .      
   java.awt.Textfield.   
Enter     ,    
    ,   :

    static {
      KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
      Keymap map =
           JTextComponent.getKeymap(JTextComponent.DEFAULT_KEYMAP);
      map.removeKeyStrokeBinding(enter);
    }

*( 11)    ?

[*]    ,    JDK:
$JAVAHOME\demo\awt-1.1\lightweight\RoundButtons\example.html

                       ------------------------------

12. 

  1. ( 12)        Java 1.1?

     [*]         JDK
     1.1. Netscape Communicator 4.04   "J"  
      Java 1.1.      1997 , 
     ,   ,-  JavaSoft  
      (   Netscape   ). 
     http://developer.netscape.com/support/faqs/champions/java.html#21
        Netscape 4.05,    -
       Java 1.1.5,    Netscape  
      1.1.     :
     http://developer.netscape.com/software/jdk/download.html

      1997  Netscape   Java     
      Microsoft. Microsoft  IE,  
        ,     
     " Java" ("polluted Java").    
       Java Plug-in.

       Sun,- HotJava,-    
     JDK 1.1. ,     
      Java,   Java Plug-In,  
       Java,   ,  
      RMI,  JavaBeans    Java (Java
     Foundation Classes)  Internet Explorer 3.02, 4.0  4.01. Java Plug-In
           Netscape.   
       http://java.sun.com/products/.
     ,     HTML     ,
        plug-in,   JVM .  
        .

  2. ( 12)       
      plug-in'     ,  
     ( (back),  (forward),  (load)  ..)?

     [*]  Java - Dave Postill -  ,  
        .
          init(), start(), stop() 
     destroy().       . 
         stop()     
      ,       (null).

            .
      ,   stop()  ,  
           ; ,   Netscape 
     stop() ,     ,  
       ,    , 
      , .

      "  Java (Java Tip) 8: , Netscape  
       (resize)  -     
      a  Netscape Navigator", JavaWorld
     http://www.javaworld.com/javatips/jw-javatip8.html.  
      JavaWorld    ,    
         ,  start() 
        stop(). ,     
     ,      stop(),    
     start(),       
     .      JavaWorld 
       ,      
            
     .

                                                          Internet
                     Netscape    Netscape       Internet    Explorer
                     [4.04/JDK   Plug-In'  (Applet-    Explorer 4  
Plug-In'
                     1.1.4]      [4.05/ JDK  Viewer)     SP1 [5.00.0518.10
                     [4.05/JDK   1.1.5/      [JDK 1.1.5] 4.72.3110.8 / Plugin
1.1]
                     1.1.5]      Plugin 1.1]              NT 4.0   NT 4.0
                                             [JDK 1.1.6] SP3         SP3
      1.  
                                     
                     init(),
      2.             start() 
       init(),     init(),     init(),     init(),     init(),
       .html start(),    start()     start()     start()     start()
                     stop(),
                     start() [1]

      3. H       stop()      stop(),     [4]         stop(),     stop(),
                                 destroy()               destroy()   destroy()

      4.       start()     init(),     [4]         init(),     init(),
                                 start()                 start()     start()
                     stop(),     stop(),                 stop(),     stop(),
      5.             destroy(),  destroy(),              destroy(),  destroy(),
        init(),     init(),     [4]         init(),     init(),
                     start()     start()                 start()     start()
      6. <shift>
        stop(),     stop(),                 stop(),     stop(),
      [NS],          destroy(),  destroy(),              destroy(),  destroy(),
      <ctrl>         init(),     init(),     [4]         init(),     init(),
        start()     start()                 start()     start()
      [IE]
      7.     stop(),
               start()     [3]         [3]         [3]         [3]
      8.
       [2]         [3]         stop()      [2]         [3]
      9. [2]         [3]         start()     [2]         [3]

      10.       stop(),     stop(),     stop(),     stop(),     stop(),
                     destroy()   destroy()   destroy()   destroy()   destroy()

     :
     [1]   .
     [2] H .
     [3]   ,     .
     [4]   .

*( 12)    Java     ""
(cookies)     ,  ""
(cookies)?

[*]  : .
 :  .
 :
"" (ookie)    ,   
 ,     .   
        .
  -  - "   ?"
 "  ?".
 DevEdge    Netscape's  Javascript-Java
  cookies.    
http://www.geocities.com/SiliconValley/Vista/1337   
    JavaScript.     ,
  Java   .

*( 12)        Netscape
Navigator,     ,    
reload,  ,   URL      
 . ?

[*] :    ,   Netscape Communicator
4.05      "control"+"shift"
 ""  "Reload"
  Netscape      , 
   .      .
    ;     
.     ("pruned")   
"",    ,   Netscape
     .
  "      URLConnection
     ?" : 

   java.net.URLConnection.setUseCaches(false)

        .
  Netscap-e       
proxy ,       .

     "?<_>"  URL, 


      http://www.somesite.com/webcam/image.jpg?100

         .

*( 12)  Netscape       
Reload ?

[*]   ,      
   ClassLoader-.  Navigator/Communicator's 
   ClassLoader-      
 . (       
 ).
H  Netscape      
  Edit/Preferences/Advanced/Cache to Clear Memory Cache and Clear
Disk Cache,    <Shift>  reload.
 Explorer,  View/Options/General/Delete Files   ,
 <Control> 'Reload'     .

      ,  appletviewer  
.    -      "" 
 .

*( 12)     Microsoft CAB  Java
JAR?

[*]  .
  CAB  Microsoft. H     
  .
  JAR   Java,    PKZIP 
 ,    JDK 1.1.
 http://www.ibm.com/java/community/viewarchive4.html 
 .
     Java - JAR (  Java),
       ,   JAR 
   Java,     
PKZIP.          ,
    

     <APPLET NAME=myapplet
     ARCHIVE="myzip.zip"
     CODE="com/nnnnn/nnnn/cccccccc.class"
     WIDTH=n
     HEIGHT=n>
     <PARAM NAME="cabbase" VALUE="mycab.cab">
     </APPLET>

IE3   JAR
IE4       JAR,    JAR

*( 12)      Java   ?

[*]  
http://java.rrzn.uni-hannover.de/insel/beispiele/vertest.html.  
     JDK 1.1.

 http://www.uni-kassel.de/~pfuetz/Properties.html  
        .

*( 13)       "Warning:Applet Window"
 , p  ?

[*]     ,    
 p ,     p p,
p  p p  ..    , 
     .     ,
 ,   p   . 
Netscape ()  Capabilities API  

   PrivilegeManager.enablePrivilege("UniversalTopLevelWindow");

p   Frame  ,   p
p .

*( 13)   pp  Applet,     
   init()?   p  pp  ?

[*] pp  pp,  setStub,   init().
,    pp, AppletStub (  
AppletContext)   . ,  p,    
pp ,  p ( ) AppletStub 
AppletContext,      init() 
 .    p,      -
,    .

*( 13)    ,   , pp .gif,
 jar-?

[*]        - p :

    String imageFileName = "foo.jpg"
    URL imageURL = getClass().getResource(imageFileName);
    Toolkit tk = Toolkit.getDefaultToolkit();
    Image img = null;
    try {
        java.awt.image.ImageProducer I_P;
        I_P = (java.awt.image.ImageProducer)imageURL.getContent();
        img = tk.createImage(I_P);

,    , , , p:

    String imageFileName = "foo.jpg";
    InputStream jpgStream = getClass().getResourceAsStream(imageFileName);
    Toolkit tk = Toolkit.getDefaultToolkit();
    Image img = null;
    try {
        byte imageBytes[]=new byte[jpgStream.available()];
        jpgStream.read(imageBytes);
        img = tk.createImage(imageBytes);

( ,   Jar-,   JDK 1.1  .)
getResource(String)  p    Netscape
      Netscape.   
  getResourceAsStream(String).
See http://developer.netscape.com/software/jdk/relnotes.htm

,  getResourceAsStream()  p   
 ( - p)   JAR-.

   public void init() {
        InputStream myStream = getClass().getResourceAsStream("myFile");
        //   ...
    }

 ,       InputStream,    
,    p.

*( 13)   pp  {,p},    ,
p  , p   {p,}.  
?

[*]  , 95% p,  p pp  ,
    p. Hp   p ,  
p   p ,     ,  
 p        pp 
  .   ,       
p,   p  WINDOW_CLOSING (p
  WINDOW_DESTROY).
    ,  p p   p  
 p. p p 15.7,  p  pp p
p.
 p  p,     p,  
p  p:

   public boolean isRunningInBrowser() {
        Component p = getParent();
        while(p != null && !(p instanceof Frame)) {
            p = p.getParent();
        }
        return (p == null);
    }

*( 13)    p  ?

[*] pp pp p  . H,    
,     -  p p.  
pp   p  ,     
,   .  p   ,  
  ,     p.
.  FAQ: Q5.2.

*( 13)       p (   p 
)?

[*]  - p :

    void center(Component parent) {
        pack();
        Point p = parent.getLocation();
        Dimension d = parent.getSize();
        Dimension s = getSize();
        p.translate((d.width - s.width) / 2, (d.height - s.height) / 2);
        setLocation(p);
    }

*( 13)      p  ?

[*]   p  p InfoBus. p
http://java.sun.com/beans/infobus/index.html

   .   HTML-p   NAME  
APPLET  ,  ,  p <APPLET ...
NAME=p ...>.   p  

    Applet anotherApplet = getAppletContext.getApplet("p");

p anotherApplet    Applet   
     . H   p,
   p      p.  p
,          p.
  p p p,   p.
  p     HTML-p,  ,
 p .   ,  Communicator 4.04  Win95
, ,  p.

Applet otherApplet;
AppletContext ac =getAppletContext;
Enumeration applets = null;
for (applets=ac.getApplets(); applets.hasMoreElements(); ) {
    otherApplet=(Applet)applets.nextElement();
    if (otherApplet!=this) break;
    //  -  otherApplet, pp,
    // if (otherApplet instanceof FooApplet) ...
}

Hp p      
 p  .   p,   
 p p , p    . Netscape
     -p ,     p,  
  p ,   p. It doesn't work if you use the
"mayscript" tag though. (    p - p. p.)
    p,    
pp   p p      
p  p.   p -      
 GUI. p      .
  p URL
http://java.sun.com:81/products/hotjava/1.1/applet_environment.html 
p,      HotJava 1.1. :
 ,   pp.

*( 13)    pp ?

[*]       pp ,  
  , pp p    .
 p    p p 
/p , pp:

    <APPLET CODE="lewinsky.class" WIDTH="100%" HEIGHT="100%">


    pp  p,   , 
 pp  pp (pp  Netscape 3.04  4.04,  
p  appletviewer').    HTML-p    
  100%   p  ,  pp 
   p.
 p :  pp p p  
  p,   pp ,    p 
 (, p,  ,    ). , p ,
 Javascript   p p p 
document.write("..."),  pp pp . H p.
p p -   SplitPane  JFC.

*( 13)    ,   JAR?

[*]      Class.getResourceAsStream(),
          
  ,   JAR.    , ,
,       .
 :  http://www.uq.net.au/~zzcmumme  .

*( 13)   (sign)  ?

[*]        
  ().    URL'  
.

 Java Signing FAQ  http://www.fastlane.net/~tlandry/javafaq.txt

  (basics of signing) :
http://www.javareport.com/html/features/archive/9802/somers.shtml
,        
 Java 1.1  Java 2.

Netscape :
http://developer.netscape.com/docs/manuals/signedobj/javadoc/netscape_security_
Target.html

https://certs.netscape.com/client.html
http://developer.netscape.com/docs/manuals/signedobj/capabilities/contents.htm

http://developer.netscape.com/docs/manuals/signedobj/targets/contents.htm

Micro$oft :
http://www.microsoft.com/java/security/secfaq.htm
http://www.microsoft.com/java/sdk/20/tools/signcode.htm

                       ------------------------------

14. Multi-Media

  1. ( 14)    Java Image ?

     [*]  Java Image Management Interface (JIMI),  
         . JIMI  
     ,    Java   
          (PNG, JPG, BMP, GIF 
     ..). JIMI   100% Java,    ,   
       . http://www.activated.com/jimi.html

  2. ( 14)      ?

     [*] Java 1.1        
     .        .au, 8 KHz, ,
        mu-law.         
      (, wav)     ,  
     ,           
     ,   .   wav  
       Java Media Framework,    JDK 1.2.
       http://www.yahoo.com GoldWave  Win 95, sox  Unix 
          .
      :
        o       
          http://saturn.math.uaa.alaska.edu/~hursha
        o    Java,    PCM .WAV
            :
          http://www.shef.ac.uk/~cs1mjp/Java/WhiteBoard/WavePlayer.html.
               Java   .

  3. ( 14)      Java?

     [*]    StreamBean.  
     http://www.streambean.com/streambean/

  4. (Sect. 14)   Java  GIF'?

     [*] Java 1.0.2      GIF  JPEG , 
       GIF89  GIF . ( GIF 
     ,        , 
          ,   -
     ).       GIF  Java 1.0.2,
         . H   , 
       .
       GIF   ,   
       ,    . 
      -      ,  
          .
     : JDK 1.1     GIF-.
         GIF'    
     ,     .

  5. ( 14)    GIF'?

     [*]  GIFanimator  ULead (,   )
     http://www.ulead.com,  GIF Construction Set  Alchemy Mindworks

  6. ( 14)     GIF'    
      ?

     [*] ,   ,       
     :

         g.drawImage(img, ix, iy, this);


        :

         g.drawImage(img, ix, iy, getBackground(), this);


               
        .      
      ,    .
        ,     imageUpdate

     public boolean imageUpdate(Image img, int flags, int x, int y,
                   int width, int height) {
             if ((flags & (FRAMEBITS|ALLBITS))!= 0) repaint();
             return (flags & (ALLBITS|ABORT)) == 0;
     }


     update 

         public void update(Graphics g) { paint(g); }


          ,    
      GIF',      .  
         ,   
              .

  7. ( 14)   Java  GIF'?

      GIF89a       
      .      1.0. Java
         GIF'   GIF'.
           (   
     -  Java ).     .

         drawImage(img, x, y, w, h, fillcolor, this);


     ,       
     ,     . ,   
            .  
          (  
     ).        
      .

  8. ( 14)       Java?

     [*]  Java Media Framework Player API.
      :
        o  Java Media Framework Player API   
          http://java.sun.com/products/java-media/jmf/
        o Intel  SDK  Java Media Framework Player API.  SDK
            Windows 95  Windows NT.   ,
           http://developer.intel.com/ial/jmedia
        o SGI   JMF  IRIX:  
          http://www.sgi.com/Products/motion/

*( 14)  p  p:

$ appletviewer m.html
Premature end of JPEG file
sun.awt.image.Im...Exception: JPEG datastream contains no image
at sun.awt.image. ... .produceImage(JPEGImageDecoder.java:133)
at sun.awt.image.Inpu...mageSource.doFetch(
                              InputStreamImageSource.java:215)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:98)

[*]    JDK   ,    
   JPEG   .   
 JPEG      (APPn marker) - 
  ,   JPEG    APPn  
   APPn     .   
       ,     
.
Photoshop     JPEG'   APPn
.  ,    Photoshop 4  
(thumbnail)  JPEG,        APPn
Photoshop'   K,      
.
   :

   *   JDK -       1.1.
     (     Web,    
     ,         , 
      ,     Java.
   *   JPEG'  Web  Photoshop,  , 
       " " ("Save thumbnails"). ( 
          ,     
        ,  Web   .  
               
         ,   99% ,  
       APPn Photoshop'  ,  
       Java.
   *   ,  'jpegtran' ( H JPEG
      - Independent JPEG Group)   APPn Photoshop'
       -    .  
      ,       -, 
         JPEG .
   * (  )      
      ,     APPn  
      . , ,   JPEG    
      ,     .

   (overhead marker)    
; 4K , ,   COM. , Photoshop  
 ""  .

*( 14)     GIF  JPEG    ?

[*]  , .
    JPEG     
GIF. ,   ,    
,     GIF<->JPEG  
    "".  ,    
   .
 :

   *       ,
      GBM (Generalized Bitmap Module).    GNU
     ,  C,     .   
     http://www.interalpha.net/customer/nyangau/
     GBM    JPEG p  p . 
       /  20  , 
     (cropping),  , ,  ,
     ,   .    GBM  
     JPEG ,       
     IJG(Independent JPEG Group),  jpeg-6a    
      -
     ftp://sun2.urz.uni-heidelberg.de/pub/simtel/graphics/jpegsr6a.zip
   *     JPEG FAQ 
     http://www.faqs.org/faqs/jpeg-faq/

*( 14)   p p InputStream ( ),
    p  p?

[*]   ,  some adroit shuffling.


    Toolkit.getImage(URL url)


 (thread)   -  http .  
 -  (8765 )   . 
  ,   **  http  
   InputStream.      
    getImage(url)    :

    Toolkit.getImage("localhost:8765/")


H     stream-to-url,     
   .       200K
  JPEG  ,    -   .

*( 14)     Java?

[*] Java Media Framework     ,    
. JMF 1.0.1    .
JMF 1.0.1   JDK 1.2,       JDK 1.1 
Netscape Communicator 4  Java 1.1.
 :

      ,    Win95/NT  
     http://www.scrawl.com/store/.   8, 16-, ,
     , 11025, 22050, 44100 Hz /, /
      .WAV.        .

*( 14)   Java    HTML?

[*] JDK 1.1   HTML     
JFC 1.1,    Swing. Swing   JDK 1.2.  
   HTML (, , ),  
   ( , . ,  .)
 :

   * JavaBrowser http://www.ii.uib.no/~alexey/jb/index.html  ,
         GNU LGPL , HTML 2.0 (
     ).
   * ICE Browser - Java Bean Component http://www.icesoft.no/ICEBrowser/
             .
           -  
      .  HTML ! Lightweight! HTML 3.2
   * HotJava HTML Component - Java Bean Component
     http://www.javasoft.com/products/hotjava/bean/index.html $195 
         . HTML 3.2
   * HTML browser ( )
     http://barium.tn.tudelft.nl/people/gool/java/html/Html.html
   * Web Window Browser http://www.opencube.com/example_wwb.htm $139 - 
      .
   * jHelp ($20-650) http://w3.nai.net/~rvdi/jhelp/jhelp2/jhelp.html jHelp
       HTML    Java, HTML 2.0

*( 14)     JPEG/GIF   
Toolkit/Applet.createImage(URL/String),  (   -1)  
  . ?

[*] AWT        .
  p    Component.drawImage(),
   ,     p 
(Thread).
 p p p, ImageObserver, p  p 
drawImage()/getHeight(),  p pp  
p p,   imageUpdate() .
   Component.drawImage(),   Component.imageUpdate()
 p **  repaint(),  p
  p.  , pp,    
 p:

    class MyComponent extends Component {
      ...
      public void paint(Graphics g) {
        ImageFilter cropper=new CropImageFilter(0,0,16,16);
        Image cropped_image=createImage(new
        FilteredImageSource(image.getSource(),cropper));
        g.drawImage(image,10,400,this);        //  p 
         //     -
        g.drawImage(cropped_image,400,15,this);
        }
      }


cropped_image     ,    
, p  repaint(),    p cropped_image
 (, ...)   .
(p   ,     ,   
paint(),    .     p
 , p  p p  jvm  .
   ,   I)     
MediaTracker    waitForAll(). II)   
ImageObserver      imageUpdate()  
  ALLBITS/FRAMEBITS. I) ,  II) , -
   ,  MediaTracker     .
    FAQ:

   *   Q13.12
   *  Q6.4     .

*( 14)      ?

[*]    Win95/NT,    SoundBite -   
 . http://www.scrawl.com/store/
        :
short[] left, right;

*( 14) Java  PNG? . PNG - Portable Network Graphics -
    GIF  TIFF.    
GIF,        Unisys - . 
 http://www.unisys.com/LeadStory/lzwfaq.html.   
 GIF -       .

PNG    RFC 1950, 1951, 2083,    
. .   PNG-1.1 
ftp://swrinde.nde.swri.edu/pub/png/documents.

PNG   Java Advanced Imaging API,  
 Java 1.2 media API.

                       ------------------------------

15.      

                                    RMI

  1. ( 15)     RMI  CORBA?  
     DCOM?  - ?

     [*]        Java, 
     RMI    ,   
     ,    Java ,   "
     "  .
            C++ (  ) 
        CORBA ,  CORBA -  .
       1997  Sun   ,  RMI   
       CORBA. Sun    RMI   IIOP
         CORBA. Java  
      RMI    CORBA   IIOP, - 
       CORBA   OMG (Object Management Group). 
         ,    
      ,      IIOP 
      ,   RMI.
       Microsoft   DCOM   ,  RMI
         .    . RMI API
          .  DCOM
       ,       Wintel, 
        Java "write once, run anywhere"
     (" ,  ").   
       DCOM ,     
     Microsoft' ,  Compaq ( DEC) Alpha.  
       ,   
      . DCOM/DNA     
     .
      :
          http://www.javaworld.com/javaworld/jw-10-1997/jw-10-corbajava.html
              CORBA   Java.
          http://www.objenv.com/cetus  CORBA/RMI.

  2. ( 15)     RMI   ?

     [*]    ,     . 
          .     
        :
     -Djava.rmi.server.hostname=hostname.domainname

  3. ( 15)  ,  RMI     JDK 1.1.
       ?

     [*]     ,    stub
     (-),     class path 
        RMI registry.  ,   ,  rmic
           "don't need $CLASSPATH for
     current dir" ("  $CLASSPATH   "),   
        .     
     classpath.
      :
           Sun,  
         RMI .
        o , :
          http://java.sun.com/products/jdk/1.1/docs/guide/rmi/index.html
        o FAQ  RMI   
          http://java.sun.com/products/jdk/rmi/faq.html
        o   RMI-USERS@JAVASOFT.COM,   
           http://chatsubo.javasoft.com/email/rmi-users/  !

  4. ( 15)      RMI  
     (55   ),   RMI  .
     ?

     [*]       64  
     .      .
        RMI ,  
         
      .     JDK 1.2.  
      ,       
       (workload mix) (..   ,  
        ,      
     ).

  5. ( 15)   RMI  Win95,   Naming.lookup()
       .    ?

     [*] (.      ,  , 
        Windows     ) 
            "hosts".   
      c:\windows\hosts (   ,   
      c:\windows\hosts.sam).  hosts   TCP/IP 
       DNS,      
        (lookups).  hosts   
      IP   .   ,   
      "localhost"   127.0.0.1 (IP loopback ) 
          hosts.

     127.0.0.1 localhost

                                Windows
